package boot.spring.controller;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import javax.websocket.Session;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;


import boot.spring.po.User;
import boot.spring.service.LoginService;
import boot.spring.service.WebSocketServer;

@Controller
public class ChatController {

	@Autowired
	LoginService loginservice;


	/**
	 * 	线上用户
	 * 如果线上用户上线就进行使用线上，并将用户的个人信息存入ConcurrentHashMap
	 * 如果没有就添加到HashSet
	 * @param currentuser
	 * @return
	 */
	@RequestMapping("/onlineusers")
	@ResponseBody
	public Set<String> onlineusers(@RequestParam("currentuser") String currentuser) {
		//获取所有的数据session 用户
		ConcurrentHashMap<String, Session> map = WebSocketServer.getSessionPools();

		//获取 用户的名称
		Set<String> set = map.keySet();

		//进行使用构造器
		Iterator<String> it = set.iterator();

		//重新创建了一个HashSet
		Set<String> nameset = new HashSet<String>();

		//循环--名称
		while (it.hasNext()) {
			//获取下一个对象
			String entry = it.next();
			//判断如果下个对象 不等于 传入参数 currentuser 就可以进行
			if (!entry.equals(currentuser))
				//将数据添加nameset
				nameset.add(entry);
		}
		//并且返回 nameset
		return nameset;
	}


	@RequestMapping("getuid")
	@ResponseBody
	public User getuid(@RequestParam("username") String username) {
		Long a = loginservice.getUidbyname(username);
		User u = new User();
		u.setUid(a);
		return u;
	}
}
